1. Technical Field
The present disclosure relates to load tests and, more specifically, to methods and systems for automatic identification of execution phases in load tests.
2. Discussion of Related Art
Modern computer software may be designed to process multiple threads of execution in a parallel fashion. Multi-threaded applications, as they are called, may include multiple program threads that are each responsible for performing a small operation that contributes to the greater application. Multiple threads may be executed concurrently using multiple microprocessors or multiple microprocessor cores. Alternatively, a single processor may interleave the execution of multiple threads by switching between threads, for example, using time-division multiplexing and/or interrupts.
Development of effective real-time applications requires that the available processing power not be excessively taxed or the computer system may be unable to keep up with the computational demands presented by the application. Where the application is multi-threaded and a large number of threads may present for processing at substantially the same time, there is a particular concern that the computer system may be excessively taxed. Moreover, there is a concern that the threads should be scheduled so as to give priority for execution where required, but only where required. In addition, with multi-threaded systems, there is a concern that threads should be able to execute without being blocked by the absence of a signal or message. Accordingly, to gain insight into the manner in which computer programs tax system resources, load testing may be performed to monitor which threads are actively engaging the processor at any given time and to determine the extent to which the processor is being utilized.
By examining the data collected during load testing, a programmer can gauge potential bottlenecks within the application execution so that the software may be improved to better distribute load and avoid overtaxing of the processor.
However, as the complexity of computer programs advances, dozens or even hundreds of threads may all vie for limited processing resources. In such an event, data collected during load testing may be difficult to manually parse as there may be a great number of threads simultaneously driving processor utilization at any given time.